//包装函数
module.exports=function(grunt){
    //任务配置，所有插件的配置信息
    grunt.initConfig({
        pkg:grunt.file.readJSON('package.json'),//获取package.json的信息
        concat:{//任务名
            options:{
                separator:";"//合并以分号隔开文件
            },
            dist:{
                src:['src/js/*.js'],
                dest:'dist/js/build.js'
            }
        },
        uglify:{
            options: {//压缩日期等注释
                banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                '<%= grunt.template.today("yyyy-mm-dd") %> */'
              },
              build: {
                files: {
                  'dist/js/build.min.js': ['dist/js/build.js']
                }
              }
        },
        jshint:{
            options:{
                //jshintrc:'./jshintrc'//指定配置文件
            },
            build:['Gruntfile.js','src/js/*.js']//指定检查文件
        },
        cssmin:{
            options:{
                mergeIntoShorthands: false,
                roundingPrecision: -1//指定配置文件
            },
            build:{
                files: {
                    'dist/css/output.min.css': ['src/css/*.css']
                }
            }
        },
        watch: {
            scripts: {
              files: ['src/js/*.js','src/css/*.css'],
              tasks: ['concat','uglify','jshint','cssmin'],
              options: {
                spawn: false,//变量更新  true:全量变量
              },
            },
        },
    });

    //grunt任务执行时去加载对应的任务插件
    grunt.loadNpmTasks('grunt-contrib-concat');//合并
    grunt.loadNpmTasks('grunt-contrib-uglify');//js压缩
    grunt.loadNpmTasks('grunt-contrib-jshint');//js语法错误检查
    grunt.loadNpmTasks('grunt-contrib-cssmin');//css压缩
    grunt.loadNpmTasks('grunt-contrib-watch');//实时监控文件变化
    //告诉grunt当我们在终端中输入grunt时需要做些什么（注意先后顺序）
    grunt.registerTask('default',['concat','uglify','jshint','cssmin']);
    grunt.registerTask('myWatch',['default','watch']);
};